<?php


namespace app\home\controller;

use app\home\lib\WeiXin;
use think\Controller;
use think\Cookie;
use think\Db;

class Login extends Controller
{
    /**
     * @name: 微信登陆
     * @test: test font
     * @msg:
     * @param {type}
     * @return:
     */
    public function login(WeiXin $weiXin)
    {
        $code = input("code", '');//微信code

        if (!$code) return outputJson(100, '参数缺失');

        //获取用户信息
        $userInfo = $weiXin->jscode2session($code);

        //返回错误信息
        if (!$userInfo) {
            return outputJson(100, '登陆失败');
        }

        //获取到用户openid
        $user = Db::name('user')->where(['openid' => $userInfo['openid']])->value('id');
        $token = md5(time());
        if (!$user) {
            //邀请码
            $info = [
                'nickname' => $this->have_special_chars($userInfo['nickname']) ? '用户' . time() : $userInfo['nickname'],
                'head_img_url' => $userInfo['headimgurl'],
                'openid' => $userInfo['openid'],
                'add_time' => date('Y-m-d H:i:s'),
                'token' => $token
            ];
            $result = Db::name('user')->insert($info);

            //填写好邀请码发放奖励
            $uid = Db::name('user')->where(['openid' => $userInfo['openid']])->value('id');
            newreg(config('urls') . '/account/addaccount', '新用户注册，奖励1元', $uid, 100);

        } else {
            $result = Db::name('user')->where(['openid' => $userInfo['openid']])->update(['token' => $token]);
        }
        if ($result === false) {
            return outputJson(100, '登录失败');
        }
        $data = [
            'token' => $token,
            'is_mobile' => $user && isset($user['mobile']) && $user['mobile'] ? 1 : 0,//是否绑定手机号1是0不是
            'uid' => Db::name('user')->where(['openid' => $userInfo['openid']])->value('id')
        ];
        return outputJson(0, 'ok', $data);
    }

    private function have_special_chars($str)
    {
        $length = mb_strlen($str);
        $array = [];
        for ($i = 0; $i < $length; $i++) {
            $array[] = mb_substr($str, $i, 1, 'utf-8');
            if (strlen($array[$i]) >= 4) {
                return true;
            }
        }
        return false;
    }

    //获取最新版本号
    public function getVersion()
    {
        $res = Db::name('config')->where(['type' => 3])->find();
        if ($res) {
            return outputJson(0, 'ok', ['version' => $res['content'], 'url' => $res['texts']]);
        }
        return outputJson(0, 'ok', []);
    }

    //获取最新版本号
    public function getSearvice()
    {
        $res = Db::name('config')->where(['type' => 16])->find();
        if ($res) {
            return outputJson(0, 'ok', ['content' => $res['content'], 'texts' => $res['texts']]);
        }
        return outputJson(0, 'ok', []);
    }

    //获取各种配置
    public function getSystemConfig()
    {
        $res = Db::name('config')->where(['type' => input('type')])->find();
        $texts = $res['texts'];
        if (in_array(input('type'), [4, 5, 6, 8, 10, 11])) {
            $texts = object_arrays(json_decode($res['texts']));
        }
        if (input('type') == 9) {
            $texts = explode(',', $res['texts']);
        }
        return outputJson(0, 'ok', ['list' => $texts]);
    }

    //视频教程
    public function jiaocheng()
    {
        return view('login/jiaocheng');
    }

    //视频教程
    public function fljiaocheng()
    {
        return view('login/jiaocheng2');
    }

    //发布任务页下载教程
    public function downloadClass(){
        return view('login/downloadclass');
    }

    //发布任务页非下载教程
    public function nodownloadClass(){
        return view('login/nodownloadclass');
    }
    //获取包名
    public function getApkname(){
        return view('login/getApkname');
    }

    //宣传页
    public function invites()
    {
        $res = Db::name('config')->where(['type' => 3])->find();
        $this->qrcode($res['texts']);
        return view('login/invite', ['urls' => $res['texts']]);
    }

    //制作二维码
    private function qrcode($url)
    {
        //带LOGO
        //二维码内容  $url
        $errorCorrectionLevel = 'L';//容错级别
        $matrixPointSize = 9;//生成图片大小
        //生成二维码图片
        Vendor('phpqrcode.phpqrcode');
        $object = new \QRcode();
        $ad = '../public/static/qcodes.png';
        $object->png($url, $ad, $errorCorrectionLevel, $matrixPointSize, 2);
        $logo = '../public/static/logo.png';//准备好的logo图片
        $QR = '../public/static/qcodes.png';//已经生成的原始二维码图
        if ($logo !== FALSE) {
            $QR = imagecreatefromstring(file_get_contents($QR));
            $logo = imagecreatefromstring(file_get_contents($logo));
            $QR_width = imagesx($QR);//二维码图片宽度
            $QR_height = imagesy($QR);//二维码图片高度
            $logo_width = imagesx($logo);//logo图片宽度
            $logo_height = imagesy($logo);//logo图片高度
            $logo_qr_width = $QR_width / 5;
            $scale = $logo_width / $logo_qr_width;
            $logo_qr_height = $logo_height / $scale;
            $from_width = ($QR_width - $logo_qr_width) / 2;
            //重新组合图片并调整大小
            imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
        }
        //输出图片  带logo图片
        imagepng($QR, '../public/static/qcodes.jpg');
    }

    //任务下线
    public function cofflineTask()
    {
        $list = Db::name('task_release')->where(['status' => 2, 'end_time' => ['lt', date('Y-m-d H:i:s')]])->select();
        dump($list);
        foreach ($list as $val) {
            Db::name('task_release')->where(['id' => $val['id']])->update(['status' => 5]);
        }
    }


    public function indes()
    {

        $asda = [
            [
                'title' => '新手问题',
                'content' => [[
                    'title' => '1.闲时联盟是一款高佣金无套路的返利软件；',
                    'content' => '',
                ], [
                    'title' => '2.闲时联盟将更多的佣金和返利，下发给用户；',
                    'content' => '',
                ]]
            ],
            [
                'title' => '任务问题',
                'content' => [[
                    'title' => '1.违规上传与任务无关的图片和信息将受到处罚，直至封停账号；',
                    'content' => '',
                ], [
                    'title' => '2.对任务有任何疑义，可联系对应的客服处理；',
                    'content' => '',
                ]]
            ],
            [
                'title' => '游戏问题',
                'content' => [[
                    'title' => '1.试玩游戏前，请在游戏详情页面确认，您有试玩的资格；',
                    'content' => '',
                ], [
                    'title' => '2.您在游戏中获得的奖金到账有一定延时，领奖后如果30分钟还没有到账请联系客服处理；',
                    'content' => '',
                ]]
            ],
            [
                'title' => '金币问题',
                'content' => [[
                    'title' => '1.闲时联盟少量场景用到了金币的奖励，每一笔金币将被自动换算成零钱；',
                    'content' => '',
                ], [
                    'title' => '2.金币兑换比例：10万金币=1元；',
                    'content' => '',
                ]]
            ],
            [
                'title' => '取现问题',
                'content' => [[
                    'title' => '1.每个用户每天只能提现1次；',
                    'content' => '',
                ], [
                    'title' => '2.提现金额不能低于1元；',
                    'content' => '',
                ], [
                    'title' => '3.小于30元的提现均是立即到账；',
                    'content' => '',
                ], [
                    'title' => '4.最高单笔提现不能大于100元；',
                    'content' => '',
                ], [
                    'title' => '5.提现高于100元的用户，请联系客服协助提取；',
                    'content' => '',
                ]]
            ],
            [
                'title' => '账号问题',
                'content' => [[
                    'title' => '1.闲时联盟基于微信认证，微信账号是您在本应用中账号的唯一凭证；',
                    'content' => '',
                ], [
                    'title' => '2.闲时联盟不搜集您的其它个人信息，请放心使用；',
                    'content' => '',
                ]]
            ]
        ];
        var_dump(json_encode(
                [
                    [
                        "title"=>"违规封号项目",
                        "content"=>[
                            [
                                "title"=>"1、发布的任务不得违反国家现行法律法规，禁止色情,政治,赌博类任务",
                                "content"=> []
                            ],[
                                "title"=>"2、禁止发布支付宝、银行卡相关任务，实名制任务，金融贷款类任务",
                                "content"=> []
                            ],[
                                "title"=>"3、选择自审模式的发布者，恶意审核合格任务不通过的，将做限制审核功能处理，严重者封号。",
                                "content"=> []
                            ],[
                                "title"=>"4、禁止发布恶意骗浏览,骗关注的任务, 招兼职等疑似骗钱任务。",
                                "content"=> []
                            ],[
                                "title"=>"注：请严格按照任务类型及任务价格要求发布，对恶意违规发布视情况做警告并下线任务处理，情节严重的永久封号。",
                                "content"=> []
                            ]
                        ]
                    ],
                    [
                        "title"=>"常见问题汇总",
                        "content"=>[
                            [
                                "title"=>"充值问题：",
                                "content"=> [
                                    "1，在本平台赚到的钱可用于任务发布，大家可以在闲时联盟悬赏寻求他人的帮助；",
                                    "2，本平台暂不支持在线自助充值，如果需要充值发布任务请联系客服处理；",
                                    "3，冲值后的余额可以随时提现，平台不会扣留一分；"
                                ]
                            ],[
                                "title"=>"发布问题：",
                                "content"=> [
                                    "1，发布任务必须按照任务目标进行分类发布，比如微信号关注，必须发布在关注类任务里，否则一律不通过；",
                                    "2，发布任务步骤描述尽量写简单易懂，便于用户理解，并准确无误的完成，描述不清的任务审核不通过；",
                                    "3，提交截图是用户完成任务的唯一凭证，发布者一定要上传能明显显示关键信息的截图，并要求用户提供；"
                                ]
                            ],
                            [
                                "title"=>"审核问题：",
                                "content"=> [
                                    "1，关于审核方式的选择，选择免审意味着用户完成任务即视为合格，自审则需要任务发布者自己审核，平台审核则交由闲时联盟来审核，审核方式不同任务消耗价格也不同；",
                                    "2，发布金额退款问题，审核不通过的任务，金额会退回账户，任务份数没消耗完的任务，剩余金额将在任务下线后3天内退回账户；",
                                    "3，发布者恶意审核合格用户不通过的，平台介入判定，用户无错则发布者将直接补偿用户2倍的任务金额，严重者封号处理；",
                                    "4，用户完成任务后，如果发布者2天未审核任务，系统将自动判定用户所完成的任务审核通过；"
                                ]
                            ]

                        ]
                    ]
                ]
                )

            );
    }
}